/****** Object:  Trigger [dbo].[I_SISM_T_ATTI]    Script Date: 04/07/2014 14:43:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[I_SISM_T_ATTI] ON [dbo].[SISM_T_ATTI]
AFTER INSERT
AS BEGIN

 DECLARE @ID_INSERTED_ROW AS INT
 DECLARE @UTENTE AS VARCHAR(50)
 DECLARE @FK_ID_CONTATTO AS INT
 DECLARE @CODPRE AS VARCHAR(7)
 DECLARE @COD_ATTO_DA_NON_INVIARE AS VARCHAR(7)
 
 SELECT @ID_INSERTED_ROW = I.COD_T_ATTI_SISM FROM inserted I
 SELECT @UTENTE=I.SYS_UTENTE_INSERIMENTO , @FK_ID_CONTATTO=COD_T_CONTATTI_SISM, @CODPRE=A.CODPRE FROM SISM_T_ATTI I, T_ATTI A WHERE I.COD_T_ATTI_SISM=@ID_INSERTED_ROW AND I.ID_ATTO=A.ID_ATTO
 SELECT @COD_ATTO_DA_NON_INVIARE=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODATTONOI' and U.STATO='A';
 
 IF(COALESCE(@ID_INSERTED_ROW,0)>0 AND @CODPRE<>@COD_ATTO_DA_NON_INVIARE)
  BEGIN
   exec SP_SISM_EVENTI_LOG 'I','SISM_T_ATTI','COD_T_ATTI_SISM', @ID_INSERTED_ROW,@UTENTE;
   INSERT INTO [SISM_EVENTI_PROG_CONTATTO] ([FK_ID_CONTATTO] , [FK_COD_T_ATTI_SISM]) VALUES (@FK_ID_CONTATTO,@ID_INSERTED_ROW);
  END
END

GO

/****** Object:  Trigger [dbo].[M_SISM_T_ATTI]    Script Date: 04/07/2014 14:32:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[M_SISM_T_ATTI] ON [dbo].[SISM_T_ATTI]
AFTER UPDATE
AS BEGIN

 DECLARE @ID_MODIFY_ROW AS INT
 DECLARE @UTENTE AS VARCHAR(50)
 DECLARE @TipoOp AS CHAR(1)
 DECLARE @Cancellato AS VARCHAR(1)
 DECLARE @DESC_PRE_NON_VALIDO VARCHAR(92)
 DECLARE @CODPRE AS VARCHAR(7)
 DECLARE @COD_ATTO_DA_NON_INVIARE AS VARCHAR(7)
 
 SET @TipoOp='S'
 
 SELECT @ID_MODIFY_ROW = MAX(I.COD_T_ATTI_SISM) FROM inserted I
 SELECT @UTENTE=I.SYS_UTENTE_ULTIMA_MOD, @Cancellato=A.STATO, @CODPRE=A.CODPRE FROM SISM_T_ATTI I, T_ATTI A WHERE I.COD_T_ATTI_SISM=@ID_MODIFY_ROW AND I.ID_ATTO=A.ID_ATTO
  
 IF(@Cancellato ='D')
  BEGIN
	SET @TipoOp='C'
  END
  
 SELECT @COD_ATTO_DA_NON_INVIARE=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODATTONOI' and U.STATO='A';
  
 IF(COALESCE(@ID_MODIFY_ROW,0)>0 AND @CODPRE<>@COD_ATTO_DA_NON_INVIARE)
  BEGIN
   exec SP_SISM_EVENTI_LOG @TipoOp,'SISM_T_ATTI','COD_T_ATTI_SISM',@ID_MODIFY_ROW, @UTENTE
  END
END

GO

/****** Object:  StoredProcedure [dbo].[SISM_CURSORE_CREA_MSG_DA_INVIARE]    Script Date: 04/09/2014 10:32:37 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_CURSORE_CREA_MSG_DA_INVIARE
-- Scopo:		Crea gli xml da inviare al SISM
-- Input:		@idTom = Non serve più
-- Return:		
-- Ultima mod:	27/01/2014 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_CURSORE_CREA_MSG_DA_INVIARE]
	@id_sism_eventi_log as int --Non Più utilizzato pensavo di utilizzarlo per generare un id_sism_eventi_log specifico o -1 tutti
AS
BEGIN
	
	SET NOCOUNT ON;
	
	declare @id_t as int
	declare @tipo_t as char(1)
	declare @time as varchar(30)
	declare @tabella as varchar(50)
	declare @colonna_identity as varchar(50)
	declare @identity_tabella_t as int
	declare @utente as varchar(50)
	declare @paz as int
	declare @tipoxml as nvarchar(1)

	declare @xmlMsg as xml 
	--The stored procedure will first declare a cursor:
	Declare @CrsrVar Cursor
	 
	-- The cursor will then be associated with the collection of properties related to the specified asset:
	 
	Set @CrsrVar = Cursor For
	 Select id,TIPO,[TIME],TABELLA,COLONNA_IDENTITY,IDENTITY_TABELLA,UTENTE  From SISM_EVENTI_LOG WHERE MSG_GENERATI is NULL
	  
	-- Before it can be used, the cursor needs to be opened:
	 
	Open @CrsrVar    
	 
	-- The content of the first record can then be fetched into local variables:
	 
	Fetch Next From @CrsrVar
	Into @id_t,@tipo_t,@time,@tabella,@colonna_identity,@identity_tabella_t,@utente
	 
	While (@@FETCH_STATUS = 0)
	begin
	DECLARE @IDCONT_RET int;
	DECLARE @CreaAnagXml int;
	DECLARE @CreaContXml int;
	DECLARE @CreaPrestXml int;
	DECLARE @TipoInvioContattato nvarchar(1);
	DECLARE @tipo_da_assegnare_per_invio as char(2);
	DECLARE @TipoMovimentoDaAsseMsgAnag as char(1);
	DECLARE @TipoMovimentoDaAsseMsgCont as char(1);
	DECLARE @TipoMovimentoDaAsseMsgPrest as char(1);
	DECLARE @AnnoDiRiferimentoDaAsseMsg as int;
	DECLARE @PeriodoDiRiferimentoDaAsseMsg as Varchar(2);
	 -- add your code ---------------------------
	
	 --select @id,@tipo,@time,@tabella,@colonna_identity,@identity_tabella,@utente
	 --select  @paz = dbo.f_get_idpazloc(@tabella, @identity_tabella_t);
	 select  @paz= IDPAZLOC_RET, @IDCONT_RET=IDCONT_RET, @tipoxml=Tipo, @TipoInvioContattato=TipoInvioContattato, @CreaAnagXml=CreaAnagXml, @CreaContXml=CreaContXml, @CreaPrestXml=CreaPrestXml, @TipoMovimentoDaAsseMsgAnag=TipoMovimentoDaAsseMsgAnag, @TipoMovimentoDaAsseMsgCont=TipoMovimentoDaAsseMsgCont, @TipoMovimentoDaAsseMsgPrest=TipoMovimentoDaAsseMsgPrest , @AnnoDiRiferimentoDaAsseMsg=AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg=PeriodoDiRiferimentoDaAsseMsg   from dbo.f_get_idpazloc(@id_t,@tabella, @identity_tabella_t, @tipo_t);
	 
	 if (@CreaAnagXml >0)
	 begin
	   if  (@CreaAnagXml =1 or @CreaAnagXml =2) begin
	     set @tipo_da_assegnare_per_invio='AT'--+@TipoInvioContattato;
		 exec  [SISM_SALVA_XML_ANAGT] @paz, @TipoMovimentoDaAsseMsgAnag, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		 
		 INSERT INTO [SISM_EVENTI_MESSAGGI]
			   ([ID_EVENTI_LOG],[MESSAGIO_XML],[TIPO],[PKIDPAZ],[TIPO_INVIO])           
		 values(@id_t, @xmlMsg,@tipoxml, @paz, @tipo_da_assegnare_per_invio);
	   end 
	   if (@CreaAnagXml =1 or @CreaAnagXml =3) begin
		 set @tipo_da_assegnare_per_invio='AR'--+@TipoInvioContattato;
	    
		 exec  [SISM_SALVA_XML_ANAGRS] @paz, @TipoMovimentoDaAsseMsgAnag, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		 
			 INSERT INTO [SISM_EVENTI_MESSAGGI]
				   ([ID_EVENTI_LOG],[MESSAGIO_XML],[TIPO],[PKIDPAZ],[TIPO_INVIO])           
			 values(@id_t, @xmlMsg,@tipoxml, @paz, @tipo_da_assegnare_per_invio);
			UPDATE SISM_EVENTI_LOG SET MSG_GENERATI =1 WHERE ID=@id_t;
			
		end
	 end
	 
	 if(@CreaContXml =1)
	 begin
		
	    set @tipo_da_assegnare_per_invio='C'+@TipoInvioContattato;
	    if(@TipoInvioContattato='T')begin
			exec  [SISM_SALVA_XML_CONTT] @IDCONT_RET, @TipoMovimentoDaAsseMsgCont, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		end
		if(@TipoInvioContattato='R'OR @TipoInvioContattato='S')begin
			exec  [SISM_SALVA_XML_CONTRS] @IDCONT_RET, @TipoMovimentoDaAsseMsgCont, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		end
		INSERT INTO [SISM_EVENTI_MESSAGGI]
			   ([ID_EVENTI_LOG],[MESSAGIO_XML],[TIPO],[PKIDPAZ], [TIPO_INVIO])           
		 values(@id_t, @xmlMsg,@tipoxml, @paz, @tipo_da_assegnare_per_invio);
		 
		 UPDATE SISM_EVENTI_LOG SET MSG_GENERATI =1 WHERE ID=@id_t;
	 end 
	 if (@CreaContXml = -1) begin
		UPDATE SISM_EVENTI_LOG SET MSG_GENERATI =0 WHERE ID=@id_t;
	 end    
	 
	 if(@CreaPrestXml=1)--creo un messaggio xml per le visite
	 begin
		
	    set @tipo_da_assegnare_per_invio='P'+@TipoInvioContattato;
	    
		exec  [SISM_SALVA_XML_PRESTT] @identity_tabella_t, @TipoMovimentoDaAsseMsgPrest, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		INSERT INTO [SISM_EVENTI_MESSAGGI]
			   ([ID_EVENTI_LOG],[MESSAGIO_XML],[TIPO],[PKIDPAZ], [TIPO_INVIO])           
		 values(@id_t, @xmlMsg,@tipoxml, @paz, @tipo_da_assegnare_per_invio);
		 
		 UPDATE SISM_EVENTI_LOG SET MSG_GENERATI =1 WHERE ID=@id_t;
	 end     
	 
	 if(@CreaPrestXml=2)--creo un messaggio xml per i farmaci
	 begin
		set @tipo_da_assegnare_per_invio='P'+@TipoInvioContattato;
		exec  [SISM_SALVA_XML_PRESTT_FARMACO] @identity_tabella_t, @TipoMovimentoDaAsseMsgPrest, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		INSERT INTO [SISM_EVENTI_MESSAGGI]
			   ([ID_EVENTI_LOG],[MESSAGIO_XML],[TIPO],[PKIDPAZ], [TIPO_INVIO])           
		 values(@id_t, @xmlMsg,@tipoxml, @paz, @tipo_da_assegnare_per_invio);
		 
		 UPDATE SISM_EVENTI_LOG SET MSG_GENERATI =1 WHERE ID=@id_t;
	 end
	 
	 if(@CreaPrestXml=3)--creo un messaggio xml per assistenza residenziale 
	 begin
		set @tipo_da_assegnare_per_invio='P'+@TipoInvioContattato;
		exec  [SISM_SALVA_XML_PRESTR] @identity_tabella_t, @TipoMovimentoDaAsseMsgPrest, @xmlMsg OUTPUT, @AnnoDiRiferimentoDaAsseMsg, @PeriodoDiRiferimentoDaAsseMsg, @utente
		INSERT INTO [SISM_EVENTI_MESSAGGI]
			   ([ID_EVENTI_LOG],[MESSAGIO_XML],[TIPO],[PKIDPAZ], [TIPO_INVIO])           
		 values(@id_t, @xmlMsg,@tipoxml, @paz, @tipo_da_assegnare_per_invio);
		 
		 UPDATE SISM_EVENTI_LOG SET MSG_GENERATI =1 WHERE ID=@id_t;
	 end
	 -- -----------------------------------------
	 
	 -- After the values from the first record are processed, we read the next record:
	 
	 Fetch Next From @CrsrVar Into  @id_t,@tipo_t,@time,@tabella,@colonna_identity,@identity_tabella_t,@utente
	 -- Richiamo la procedura che genera un eventuale xml per ANAGT
	 -- TODO come gestisco i vari tipi di flusso???????
	 --
	 --exec SISM_SALVA_XML_ANAGT @id,@tipo
	 -- TODO Marco il record a 1 sulla tabella SISM_EVENTI_LOG
	end
	-- Once all records have been read, the value of @@fetch_status is set to –1 and we exit the loop. We need to close and deallocate the cursor and finish the stored procedure:
	 
	Close @CrsrVar
	Deallocate @CrsrVar
	
	--Richiamo wev services
	declare @URL_IIS varchar(200);
	declare @SOAPAction varchar(200);
	
	SELECT @URL_IIS=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='URL_IIS' and U.STATO='A';
	SELECT @SOAPAction=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='SOAPAction' and U.STATO='A';
	
	if(LEN(@URL_IIS)>1 AND LEN(@SOAPAction)>1)
	begin
		declare @xmlOut as varchar(8000)
		Declare @RequestText as varchar(8000);
		set @RequestText=
		'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:chec="http://CheckService.central.services.IntegraSISM.babele.csi.it">
		   <soapenv:Header/>
		   <soapenv:Body>
			  <chec:CaricaXml/>
		   </soapenv:Body>
		</soapenv:Envelope>'
		exec spHTTPRequest
		@URL_IIS,
		'POST',
		@RequestText,
		@SOAPAction,
		'', '', @xmlOut out
		select @xmlOut
	end
			
END

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_ANAGRS]    Script Date: 04/09/2014 10:33:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_ANAGRS
-- Scopo:		Carica i dati relativi al PPRI di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	3/2/2014 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_ANAGRS]	
	@id as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
	declare @idPazloc as int
--Costanti
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'

--Dati da ricavare tramite query
--DAti Assistito da prelevare dalla tabella [T_DATI_ANAGRAFICI_SDO]
declare @idAura as varchar(50)

--
declare @TipoMovimento as char(1)
declare @RegioneDiResidenza as varchar(3)
declare @CodiceASLDiResidenza as varchar(3)
declare @CodiceFiscale as varchar(16)
declare @Cittadinanza as varchar(2)

DECLARE @T_AURA TABLE (
	[ID_AURA] NVARCHAR(50) NULL,
	[SDO_ISTRUZIONE] NVARCHAR(50) NULL,
	[SDO_CONDPROF] NVARCHAR(50) NULL,
	[FAM_VIVECON] NVARCHAR(50) NULL,
	[STATOCIVILE] NVARCHAR(50) NULL,
	[COMRES]    NVARCHAR(6) NULL,
	[REGRES]	NVARCHAR(3) NULL,
	[USL]		NVARCHAR(3) NULL,
	[COGNOME]   NVARCHAR(50) NULL,
	[NOME]		NVARCHAR(50) NULL,
	[CODFISCALE] NVARCHAR(16) NULL,
	[SESSO]		CHAR(1) NULL,
	[DATANASC]  NVARCHAR(8) NULL,
	[LUOGONASC] NVARCHAR(6) NULL,
	[CITTADINANZA] NVARCHAR(2) NULL
)

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@id and t.ID_PAZLOC=l.ID_PAZLOC;
if coalesce(@idAura,'')  <> ''
begin
	INSERT INTO @T_AURA([ID_AURA],[SDO_ISTRUZIONE],[SDO_CONDPROF],[FAM_VIVECON],[STATOCIVILE])
		SELECT
			coalesce(l.ID_AURA,'')
			,coalesce(SDO_ISTRUZIONE,'') 
			,coalesce(SDO_CONDPROF,'') 
			,coalesce(FAM_VIVECON,'') 
			,coalesce(STATOCIVILE,'') 
			FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@id and t.ID_PAZLOC=l.ID_PAZLOC	
end
else 
begin 
SELECT @Cittadinanza=c.[COD_ALPHA_2_CODIFICA_ISO3166] FROM [dbo].[T_DATI_ANAGRAFICI] t, [dbo].[SISM_UTBG_CITTADINANZE] c WHERE t.ID_PAZLOC =@id  AND c.CODICE=t.CITTADINANZA
INSERT INTO @T_AURA(COMRES,REGRES,USL,STATOCIVILE,COGNOME,NOME,CODFISCALE,SESSO,DATANASC,LUOGONASC,CITTADINANZA)
		SELECT
			coalesce(COMRES,'')
			,coalesce(REGRES,'') 
			,coalesce(USL,'') 
			,coalesce(STATOCIVILE,'')
			,coalesce(COGNOME,'')
			,coalesce(NOME,'') 
			,coalesce(CODFISCALE,'') 
			--,coalesce(SESSO,'')
			,CASE WHEN SESSO = 'M' THEN 1
				WHEN SESSO = 'F' THEN 2
				ELSE 3 END AS LN
			--,coalesce(DATANASC,'')
			,case when REPLACE(convert(char(10),convert(datetime, DATANASC),103), '/', '')='01011900' then null else REPLACE(convert(char(10),convert(datetime, DATANASC),103), '/', '') end 
			,coalesce(LUOGONASC,'')
			,coalesce(@Cittadinanza,'')
			FROM [dbo].[T_DATI_ANAGRAFICI] t
            WHERE t.ID_PAZLOC =@id 
            
end
       --select * from @T_AURA
begin 
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")      
       select @retXml = (
select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiScheda/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiScheda/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiScheda/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiScheda/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiScheda/tns:codiceDipartimentoSaluteMentale'
			FOR XML PATH(''), type
		) ,
		----------------BODY
		(SELECT
			coalesce(@tipo,'') as 'tns:TipoMovimento'
			FOR XML PATH(''), type
		),
		
		(
		SELECT TOP 1
			ID_AURA as 'tns:DatiAssistito/tns:IdentificativoAURA'
			,SDO_ISTRUZIONE as 'tns:DatiAssistito/tns:TitoloDiStudio'
			,SDO_CONDPROF as 'tns:DatiAssistito/tns:CodiceProfessionale'
			,FAM_VIVECON as 'tns:DatiAssistito/tns:CollocazioneSocioAmbientale'
			,STATOCIVILE as 'tns:DatiAssistito/tns:StatoCivile'
			FROM @T_AURA where coalesce(ID_AURA,'') <> ''
			FOR XML PATH(''), type
		) as 'tns:DatiAssistitoElement',		
		(
		SELECT TOP 1
			coalesce(REGRES,'') as 'tns:DatiIntegrativiAssistito/tns:RegioneDiResidenza'
			,coalesce(COMRES,'') as 'tns:DatiIntegrativiAssistito/tns:ProvinciaComuneStatoEsteroResidenza'
			,coalesce(USL,'') as 'tns:DatiIntegrativiAssistito/tns:CodiceASLDiResidenza'
			FROM @T_AURA where ID_AURA is NULL
			FOR XML PATH(''), type 
		) as 'tns:DatiAssistitoElement'		
		,(
		SELECT TOP 1
			coalesce(CODFISCALE,'') as 'tns:DatiAnagraficiNonResidentiPiemonteNoAURA/tns:CodiceFiscale'
			,coalesce(@id,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:IdentificativoAssistito'
			,coalesce(COGNOME,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Cognome'
			,coalesce(NOME,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Nome'
			,coalesce(DATANASC,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:DataDiNascita'
			,coalesce(SESSO,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Sesso'
			,coalesce(LUOGONASC,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:ProvinciaComuneStatoEsteroNascita'
			,coalesce(CITTADINANZA,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Cittadinanza'
			FROM @T_AURA where ID_AURA is NULL
			FOR XML PATH(''), type
		) as 'tns:DatiAssistitoElement',		
		(SELECT
			coalesce('AR','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:AnagRSElement'), type 
) 

end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_ANAGT]    Script Date: 04/09/2014 10:34:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_ANAGT
-- Scopo:		Carica i dati relativi al PPRI di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	14/10/2010 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_ANAGT]	
	@id as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
	declare @idPazloc as int
--Costanti
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'

--Dati da ricavare tramite query
--DAti Assistito da prelevare dalla tabella [T_DATI_ANAGRAFICI_SDO]
declare @idAura as varchar(50)

--
declare @TipoMovimento as char(1)
declare @RegioneDiResidenza as varchar(3)
declare @CodiceASLDiResidenza as varchar(3)
declare @CodiceFiscale as varchar(16)
declare @Cittadinanza as varchar(2)

DECLARE @T_AURA TABLE (
	[ID_AURA] NVARCHAR(50) NULL,
	[SDO_ISTRUZIONE] NVARCHAR(50) NULL,
	[SDO_CONDPROF] NVARCHAR(50) NULL,
	[FAM_VIVECON] NVARCHAR(50) NULL,
	[STATOCIVILE] NVARCHAR(50) NULL,
	[COMRES]    NVARCHAR(6) NULL,
	[REGRES]	NVARCHAR(3) NULL,
	[USL]		NVARCHAR(3) NULL,
	[COGNOME]   NVARCHAR(50) NULL,
	[NOME]		NVARCHAR(50) NULL,
	[CODFISCALE] NVARCHAR(16) NULL,
	[SESSO]		CHAR(1) NULL,
	[DATANASC]  NVARCHAR(8) NULL,
	[LUOGONASC] NVARCHAR(6) NULL,
	[CITTADINANZA] NVARCHAR(2) NULL
)

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@id and t.ID_PAZLOC=l.ID_PAZLOC;
if coalesce(@idAura,'')  <> ''
begin
	INSERT INTO @T_AURA([ID_AURA],[SDO_ISTRUZIONE],[SDO_CONDPROF],[FAM_VIVECON],[STATOCIVILE])
		SELECT
			coalesce(l.ID_AURA,'')
			,coalesce(SDO_ISTRUZIONE,'') 
			,coalesce(SDO_CONDPROF,'') 
			,coalesce(FAM_VIVECON,'') 
			,coalesce(STATOCIVILE,'') 
			FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@id and t.ID_PAZLOC=l.ID_PAZLOC	
end
else 
begin 
SELECT @Cittadinanza=c.[COD_ALPHA_2_CODIFICA_ISO3166] FROM [dbo].[T_DATI_ANAGRAFICI] t, [dbo].[SISM_UTBG_CITTADINANZE] c WHERE t.ID_PAZLOC =@id  AND c.CODICE=t.CITTADINANZA
INSERT INTO @T_AURA(COMRES,REGRES,USL,STATOCIVILE,COGNOME,NOME,CODFISCALE,SESSO,DATANASC,LUOGONASC,CITTADINANZA)
		SELECT
			coalesce(COMRES,'')
			,coalesce(REGRES,'') 
			,coalesce(USL,'') 
			,coalesce(STATOCIVILE,'')
			,coalesce(COGNOME,'')
			,coalesce(NOME,'') 
			,coalesce(CODFISCALE,'') 
			--,coalesce(SESSO,'')
			,CASE WHEN SESSO = 'M' THEN 1
				WHEN SESSO = 'F' THEN 2
				ELSE 3 END AS LN
			--,coalesce(DATANASC,'')
			,case when REPLACE(convert(char(10),convert(datetime, DATANASC),103), '/', '')='01011900' then null else REPLACE(convert(char(10),convert(datetime, DATANASC),103), '/', '') end 
			,coalesce(LUOGONASC,'')
			,coalesce(@Cittadinanza,'')
			FROM [dbo].[T_DATI_ANAGRAFICI] t
            WHERE t.ID_PAZLOC =@id 
            
end

begin
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")
       --select * from @T_AURA
       
       
       select @retXml = (
select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiScheda/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiScheda/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiScheda/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiScheda/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiScheda/tns:codiceDipartimentoSaluteMentale'
			FOR XML PATH(''), type
		) ,
		----------------BODY
		(SELECT
			coalesce(@tipo,'') as 'tns:TipoMovimento'
			FOR XML PATH(''), type
		),
		
		(
		SELECT TOP 1
			ID_AURA as 'tns:DatiAssistito/tns:IdentificativoAURA'
			,SDO_ISTRUZIONE as 'tns:DatiAssistito/tns:TitoloDiStudio'
			,SDO_CONDPROF as 'tns:DatiAssistito/tns:CodiceProfessionale'
			,FAM_VIVECON as 'tns:DatiAssistito/tns:CollocazioneSocioAmbientale'
			,STATOCIVILE as 'tns:DatiAssistito/tns:StatoCivile'
			FROM @T_AURA where coalesce(ID_AURA,'') <> ''
			FOR XML PATH(''), type
		) as 'tns:DatiAssistitoElement',		
		(
		SELECT TOP 1
			REGRES as 'tns:DatiIntegrativiAssistito/tns:RegioneDiResidenza'
			,COMRES as 'tns:DatiIntegrativiAssistito/tns:ProvinciaComuneStatoEsteroResidenza'
			,USL as 'tns:DatiIntegrativiAssistito/tns:CodiceASLDiResidenza'
			FROM @T_AURA where ID_AURA is NULL
			FOR XML PATH(''), type 
		) as 'tns:DatiAssistitoElement'		
		,(
		SELECT TOP 1
			CODFISCALE as 'tns:DatiAnagraficiNonResidentiPiemonteNoAURA/tns:CodiceFiscale'
			,@id as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:IdentificativoAssistito'
			,COGNOME as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Cognome'
			,NOME as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Nome'
			,DATANASC as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:DataDiNascita'
			,SESSO as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Sesso'
			,LUOGONASC as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:ProvinciaComuneStatoEsteroNascita'
			,CITTADINANZA as 'tns:DatiAnagraficiAssistitiSenzaIdentificativo/tns:Cittadinanza'
			FROM @T_AURA where ID_AURA is NULL
			FOR XML PATH(''), type
		) as 'tns:DatiAssistitoElement',		
		(SELECT
			'AT' as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:AnagTElement'), type 
) 
end

END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_CONTRS]    Script Date: 04/09/2014 10:35:01 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_CONTRS
-- Scopo:		Carica i dati relativi al PPRI di un paziente 
-- Input:		@idcontatto = id del contatto e altro 
-- Return:		
-- Ultima mod:	13/03/2014 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_CONTRS]	
	@idcont as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
--Costanti TO DO DA mettere da qualche parte sul db 
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CENTRO_DI_COSTO as char(7)
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)
declare @codiceStruttura as varchar(50)
declare @matricolaUnitaProduttiva as varchar(5)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'--??
--mi ricavo tramite ccosto \/
select @CENTRO_DI_COSTO=CENTRO_DI_COSTO from SISM_T_CONTATTI WHERE COD_T_CONTATTI_SISM=@idcont;
select @codiceStruttura=STS11, @matricolaUnitaProduttiva=MUP_C from UTBG_CCOSTO_PARAM where CCOSTO=@CENTRO_DI_COSTO;

--Dati da ricavare tramite query
declare @idPazloc as int
declare @idPAzlocStr as varchar(50)
declare @idAura as varchar(50)

--
declare @TipoMovimento as char(1)
declare @RegioneDiResidenza as varchar(3)
declare @CodiceASLDiResidenza as varchar(3)
declare @CodiceFiscale as varchar(16)
declare @Cittadinanza as varchar(3)

DECLARE @T_CONT TABLE (
    --DatiAssistito metto o idAura o IdPazloc
	[ID_AURA] NVARCHAR(50) NULL,
	[ID_PAZLOC] NVARCHAR(50) NULL,
	
	[SDO_CONDPROF] NVARCHAR(50) NULL,
	[FAM_VIVECON] NVARCHAR(50) NULL,
	[STATOCIVILE] NVARCHAR(50) NULL,
	[COMRES]    NVARCHAR(6) NULL,
	[REGRES]	NVARCHAR(3) NULL,
	[USL]		NVARCHAR(3) NULL,
	[COGNOME]   NVARCHAR(50) NULL,
	[NOME]		NVARCHAR(50) NULL,
	[CODFISCALE] NVARCHAR(16) NULL,
	[SESSO]		CHAR(1) NULL,
	[DATANASC]  NVARCHAR(8) NULL,
	[LUOGONASC] NVARCHAR(6) NULL,
	[CITTADINANZA] NVARCHAR(3) NULL
)

SELECT @idPazloc=[ID_PAZLOC] FROM [dbo].[SISM_T_CONTATTI] WHERE [COD_T_CONTATTI_SISM]=@idcont;

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@idPazloc and t.ID_PAZLOC=l.ID_PAZLOC;
           
if coalesce(@idAura,'')  <> ''
begin
	set @idPAzlocStr=null 
end
else 
begin 
   set @idAura=null
   set @idPAzlocStr=@idPazloc
end
       --select * from @T_CONT
--mi ricavo i codici diagnosi per apertura e chiusura
declare @DiagnosiApertura as varchar(5)
declare @DiagnosiChiusura as varchar(5)

--TODO le diagnosi possono essere cancellate capire cosa fare quando accade
SELECT @DiagnosiApertura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=0;
SELECT @DiagnosiChiusura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=2;
--       

--mi ricavo il codice inviante contatto
declare @cod_inv_cont as int
SELECT @cod_inv_cont=i.COD_INVIANTE_CONTATTO FROM SISM_INVIANTE_CONTATTO i, SISM_T_CONTATTI C where ID_INVIANTE_CONTATTO=c.COD_INVIANTE_CONTATTO and C.COD_T_CONTATTI_SISM = @idcont;
--
begin
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")       
select @retXml =(
	select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceDipartimentoSaluteMentale'
				,coalesce(@codiceStruttura,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceStruttura'
			FOR XML PATH(''), type
		) ,
		
		(SELECT
			coalesce(@matricolaUnitaProduttiva,'') as 'tns:PuntoDiErogazione/tns:MatricolaUnitaProduttiva'
			,coalesce(@tipo,'') as 'tns:TipoMovimento'
			,coalesce(@idAura,'') as 'tns:DatiAssistitoLight/tns:IdentificativoAURA'
			,coalesce(@idPazloc,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativoLight/tns:IdentificativoAssistito'
			FOR XML PATH(''), type
		),
		---------------- BEGIN BODY
		
		(
		SELECT TOP 1
			coalesce(C.COD_T_CONTATTI_SISM,'') as 'tns:DatiContatto/tns:IdentificativoContatto'
			,REPLACE(convert(char(10),coalesce(C.DATA_ACCESSO,''),103), '/', '') as 'tns:DatiContatto/tns:DataAperturaSchedaPaziente'
			,@DiagnosiApertura as 'tns:DatiContatto/tns:DiagnosiApertura'
			,coalesce(NULL,'') as 'tns:DatiContatto/tns:PresenzaPianoTerapeutico'
			,coalesce(CONTATTI_PRECEDENTI,'') as 'tns:DatiContatto/tns:PrecedentiContatti'
			,@cod_inv_cont as 'tns:DatiContatto/tns:InviantePerPrimoContatto'
			,case when REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '') end as 'tns:DatiContatto/tns:DataChiusuraSchedaPaziente'
			,@DiagnosiChiusura as 'tns:DatiContatto/tns:DiagnosiChiusura'
			,COD_TIPO_CONCLUSIONE as 'tns:DatiContatto/tns:ModalitaConclusione'
			FROM SISM_T_CONTATTI C, SISM_L_CONTATTI_SISM_DIAGNOSI D  where C.COD_T_CONTATTI_SISM = @idcont AND D.COD_T_CONTATTI_SISM=C.COD_T_CONTATTI_SISM
			FOR XML PATH(''), type
		) ,		
		(
		SELECT
			REPLACE(convert(char(10),coalesce([DATA_INIZIO_VALIDITA],''),103), '/', '') as 'tns:TariffaGiornalieraAcquistoPrestazione/tns:DataInizioValidita'
			,QUOTA_SANITARIA as 'tns:TariffaGiornalieraAcquistoPrestazione/tns:QuotaSanitaria'
			,QUOTA_SOCIALE as 'tns:TariffaGiornalieraAcquistoPrestazione/tns:QuotaSociale'
			,QUOTA_ASSISTITO as 'tns:TariffaGiornalieraAcquistoPrestazione/tns:QuotaAssistito'
			,ALTRE_QUOTE as 'tns:TariffaGiornalieraAcquistoPrestazione/tns:AltreQuote'
			,case when REPLACE(convert(char(10),coalesce(DATA_FINE_VALIDITA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(DATA_FINE_VALIDITA ,''),103), '/', '') end as 'tns:TariffaGiornalieraAcquistoPrestazione/tns:DataFineValiditaTariffa'
			FROM [dbo].SISM_T_TARIFFA_GIORNALIERA_PRESTAZIONE_CONTATTO where [COD_T_CONTATTI_SISM]=@idcont
			FOR XML PATH(''), type 
		), 		
				
		(SELECT
			coalesce('CR','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:ContRSElement'), type 
)
end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_CONTT]    Script Date: 04/09/2014 10:37:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_CONTT
-- Scopo:		Carica i dati relativi al PPRI di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	08/11/2013 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_CONTT]	
	@idcont as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
--Costanti TO DO DA mettere da qualche parte sul db 
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CENTRO_DI_COSTO as char(7)--chiave cceroga da t_atti
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)
declare @codiceStruttura as varchar(50)
declare @matricolaUnitaProduttiva as varchar(5)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'--??
--mi ricavo tramite ccosto \/
select @CENTRO_DI_COSTO=CENTRO_DI_COSTO from SISM_T_CONTATTI WHERE COD_T_CONTATTI_SISM=@idcont;
select @codiceStruttura=STS11, @matricolaUnitaProduttiva=MUP_C from UTBG_CCOSTO_PARAM where CCOSTO=@CENTRO_DI_COSTO;

--Dati da ricavare tramite query
declare @idPazloc as int
declare @idPAzlocStr as varchar(50)
declare @idAura as varchar(50)

--
declare @TipoMovimento as char(1)
declare @RegioneDiResidenza as varchar(3)
declare @CodiceASLDiResidenza as varchar(3)
declare @CodiceFiscale as varchar(16)
declare @Cittadinanza as varchar(3)

DECLARE @T_CONT TABLE (
    --DatiAssistito metto o idAura o IdPazloc
	[ID_AURA] NVARCHAR(50) NULL,
	[ID_PAZLOC] NVARCHAR(50) NULL,
	
	[SDO_CONDPROF] NVARCHAR(50) NULL,
	[FAM_VIVECON] NVARCHAR(50) NULL,
	[STATOCIVILE] NVARCHAR(50) NULL,
	[COMRES]    NVARCHAR(6) NULL,
	[REGRES]	NVARCHAR(3) NULL,
	[USL]		NVARCHAR(3) NULL,
	[COGNOME]   NVARCHAR(50) NULL,
	[NOME]		NVARCHAR(50) NULL,
	[CODFISCALE] NVARCHAR(16) NULL,
	[SESSO]		CHAR(1) NULL,
	[DATANASC]  NVARCHAR(8) NULL,
	[LUOGONASC] NVARCHAR(6) NULL,
	[CITTADINANZA] NVARCHAR(3) NULL
)

SELECT @idPazloc=[ID_PAZLOC] FROM [dbo].[SISM_T_CONTATTI] WHERE [COD_T_CONTATTI_SISM]=@idcont;

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@idPazloc and t.ID_PAZLOC=l.ID_PAZLOC;
           
if coalesce(@idAura,'')  <> ''
begin
	set @idPAzlocStr=null 
end
else 
begin 
   set @idAura=null
   set @idPAzlocStr=@idPazloc
end
       --select * from @T_CONT
--mi ricavo i codici diagnosi per apertura e chiusura
declare @DiagnosiApertura as varchar(5)
declare @DiagnosiChiusura as varchar(5)

--TODO le diagnosi possono essere cancellate capire cosa fare quando accade
SELECT @DiagnosiApertura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=0;
SELECT @DiagnosiChiusura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=2;
--       

--mi ricavo il codice inviante contatto
declare @cod_inv_cont as int
SELECT @cod_inv_cont=i.COD_INVIANTE_CONTATTO FROM SISM_INVIANTE_CONTATTO i, SISM_T_CONTATTI C where ID_INVIANTE_CONTATTO=c.COD_INVIANTE_CONTATTO and C.COD_T_CONTATTI_SISM = @idcont;
--
begin
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")       
select @retXml =(
	select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceDipartimentoSaluteMentale'
				,coalesce(@codiceStruttura,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceStruttura'
			FOR XML PATH(''), type
		) ,
		
		(SELECT
			coalesce(@matricolaUnitaProduttiva,'') as 'tns:PuntoDiErogazione/tns:MatricolaUnitaProduttiva'
			,coalesce(@tipo,'') as 'tns:TipoMovimento'
			,coalesce(@idAura,'') as 'tns:DatiAssistitoLight/tns:IdentificativoAURA'
			,coalesce(@idPazloc,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativoLight/tns:IdentificativoAssistito'
			FOR XML PATH(''), type
		),
		---------------- BEGIN BODY
		
		(
		SELECT TOP 1
			coalesce(C.COD_T_CONTATTI_SISM,'') as 'tns:DatiContatto/tns:IdentificativoContatto'
			,REPLACE(convert(char(10),coalesce(C.DATA_ACCESSO,''),103), '/', '') as 'tns:DatiContatto/tns:DataAperturaSchedaPaziente'
			,@DiagnosiApertura as 'tns:DatiContatto/tns:DiagnosiApertura'
			,coalesce(NULL,'') as 'tns:DatiContatto/tns:PresenzaPianoTerapeutico'
			,coalesce(CONTATTI_PRECEDENTI,'') as 'tns:DatiContatto/tns:PrecedentiContatti'
			,@cod_inv_cont as 'tns:DatiContatto/tns:InviantePerPrimoContatto'
			,case when REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '') end as 'tns:DatiContatto/tns:DataChiusuraSchedaPaziente'
			,@DiagnosiChiusura as 'tns:DatiContatto/tns:DiagnosiChiusura'
			,COD_TIPO_CONCLUSIONE as 'tns:DatiContatto/tns:ModalitaConclusione'
			FROM SISM_T_CONTATTI C, SISM_L_CONTATTI_SISM_DIAGNOSI D  where C.COD_T_CONTATTI_SISM = @idcont AND D.COD_T_CONTATTI_SISM=C.COD_T_CONTATTI_SISM
			FOR XML PATH(''), type
		) ,		
		(
		SELECT
			REPLACE(convert(char(10),coalesce([DATA_INIZIO_CONTRIBUTO],''),103), '/', '') as 'tns:ContributiEconomiciAlPaziente/tns:DataInizioContributo'
			,COD_TIPO_CONTRIBUTO as 'tns:ContributiEconomiciAlPaziente/tns:MotivoErogazioneContributo'
			,case when REPLACE(convert(char(10),coalesce(DATA_CESSAZIONE_CONTRIBUTO ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(DATA_CESSAZIONE_CONTRIBUTO ,''),103), '/', '') end as 'tns:ContributiEconomiciAlPaziente/tns:DataCessazioneContributo'
			,COD_MOTIVO_CESSAZIONE_CONTRIBUTO as 'tns:ContributiEconomiciAlPaziente/tns:MotivoCessazioneContributo'
			FROM [dbo].[SISM_T_CONTRIBUTI_ECONOMICI] where [COD_T_CONTATTI_SISM]=@idcont
			FOR XML PATH(''), type 
		), 		
				
		(SELECT
			coalesce('CT','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:ContTElement'), type 
)
end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_PRESTR]    Script Date: 04/09/2014 10:38:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_PRESTR
-- Scopo:		Carica i dati relativi alle prestazioni di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	27/03/2013 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_PRESTR]	
	@COD_ASSISTENZA_RESIDENZIALE as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
--Costanti TO DO DA mettere da qualche parte sul db 
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)
declare @codiceStruttura as varchar(50)
declare @matricolaUnitaProduttiva as varchar(5)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'--??UTBG_CCOSTO


--Dati da ricavare tramite query
declare @idPazloc as int
declare @idcont as int
declare @idPAzlocStr as varchar(50)
declare @idAura as varchar(50)
declare @cceroga as char(7)
--
SELECT @idcont=COD_T_CONTATTI_SISM  FROM SISM_T_ASSISTENZA_RESIDENZIALE WHERE COD_ASSISTENZA_RESIDENZIALE=@COD_ASSISTENZA_RESIDENZIALE;
SELECT @idAtto=A.ID_ATTO FROM SISM_T_ATTI A WHERE A.COD_T_CONTATTI_SISM=@idcont;
select @cceroga=CCEROGA from T_ATTI A WHERE A.ID_ATTO=@idAtto;
select @codiceStruttura=STS11, @matricolaUnitaProduttiva=MUP_C from UTBG_CCOSTO_PARAM where CCOSTO=@cceroga;

SELECT @idPazloc=[ID_PAZLOC] FROM [dbo].[SISM_T_CONTATTI] WHERE [COD_T_CONTATTI_SISM]=@idcont;--centro di costo

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@idPazloc and t.ID_PAZLOC=l.ID_PAZLOC;
           
if coalesce(@idAura,'')  <> ''
begin
	set @idPAzlocStr=null 
end
else 
begin 
   set @idAura=null
   set @idPAzlocStr=@idPazloc
end
       --select * from @T_CONT
--mi ricavo i codici diagnosi per apertura e chiusura
declare @DiagnosiApertura as varchar(5)
declare @DiagnosiChiusura as varchar(5)


--TODO le diagnosi possono essere cancellate capire cosa fare quando accade
SELECT @DiagnosiApertura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=0;
SELECT @DiagnosiChiusura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=2;
--       

--mi ricavo il codice inviante contatto
declare @cod_inv_cont as int
SELECT @cod_inv_cont=i.COD_INVIANTE_CONTATTO FROM SISM_INVIANTE_CONTATTO i, SISM_T_CONTATTI C where ID_INVIANTE_CONTATTO=c.COD_INVIANTE_CONTATTO and C.COD_T_CONTATTI_SISM = @idcont;
--

begin
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")   
select @retXml =(
	select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceDipartimentoSaluteMentale'
				,coalesce(@codiceStruttura,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceStruttura'
			FOR XML PATH(''), type
		) ,
		
		(SELECT
			coalesce(@matricolaUnitaProduttiva,'') as 'tns:PuntoDiErogazione/tns:MatricolaUnitaProduttiva'
			,coalesce(@idAura,'') as 'tns:DatiAssistitoLight/tns:IdentificativoAURA'
			,coalesce(@idPazloc,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativoLight/tns:IdentificativoAssistito'
			FOR XML PATH(''), type
		),
		---------------- BEGIN BODY
		
		(
		SELECT TOP 1
			coalesce(C.COD_T_CONTATTI_SISM,'') as 'tns:DatiContatto/tns:IdentificativoContatto'
			,REPLACE(convert(char(10),coalesce(C.DATA_ACCESSO,''),103), '/', '') as 'tns:DatiContatto/tns:DataAperturaSchedaPaziente'
			,@DiagnosiApertura as 'tns:DatiContatto/tns:DiagnosiApertura'
			,coalesce(NULL,'') as 'tns:DatiContatto/tns:PresenzaPianoTerapeutico'
			,coalesce(CONTATTI_PRECEDENTI,'') as 'tns:DatiContatto/tns:PrecedentiContatti'
			,@cod_inv_cont as 'tns:DatiContatto/tns:InviantePerPrimoContatto'
			,case when REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '') end as 'tns:DatiContatto/tns:DataChiusuraSchedaPaziente'
			,@DiagnosiChiusura as 'tns:DatiContatto/tns:DiagnosiChiusura'
			,COD_TIPO_CONCLUSIONE as 'tns:DatiContatto/tns:ModalitaConclusione'
			FROM SISM_T_CONTATTI C, SISM_L_CONTATTI_SISM_DIAGNOSI D  where C.COD_T_CONTATTI_SISM = @idcont AND D.COD_T_CONTATTI_SISM=C.COD_T_CONTATTI_SISM
			FOR XML PATH(''), type
		),		
		(
		SELECT coalesce(@tipo,'') as 'tns:TipoMovimento'
		FOR XML PATH(''), type
		) 
		,		
		(
		SELECT
			REPLACE(convert(char(10),coalesce(convert(datetime,S.DATA_AMMISSIONE,103) ,''),103), '/', '') as 'tns:DatiDellaPrestazioneResidenziale/tns:dataAmmissione'
			,(select T.COD_FLUSSO_SISM FROM SISM_UTBG_STRUTTURE Z, SISM_TIPO_STRUTTURA T where Z.COD_STRUTTURA=S.COD_STRUTTURA AND Z.COD_TIPO_STRUTTURA=T.COD_TIPO_STRUTTURA) as 'tns:DatiDellaPrestazioneResidenziale/tns:TipoStrutturaResidenziale'
			,case when REPLACE(convert(char(10),coalesce(S.DATA_DISMISSIONE ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(S.DATA_DISMISSIONE ,''),103), '/', '') end as 'tns:DatiDellaPrestazioneResidenziale/tns:dataDimissione'
			FROM SISM_T_ASSISTENZA_RESIDENZIALE S WHERE S.COD_ASSISTENZA_RESIDENZIALE=@COD_ASSISTENZA_RESIDENZIALE
			FOR XML PATH(''), type 
		), 		
				
		(SELECT
			coalesce('PR','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:PrestRElement'), type 
)
end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_PRESTS]    Script Date: 04/09/2014 10:38:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_PRESTS
-- Scopo:		Carica i dati relativi alle prestazioni di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	03/04/2013 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_PRESTS]	
	@COD_T_ATTI_SISM as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
--Costanti TO DO DA mettere da qualche parte sul db 
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)
declare @codiceStruttura as varchar(50)
declare @matricolaUnitaProduttiva as varchar(5)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'--??UTBG_CCOSTO


--Dati da ricavare tramite query
declare @id_Atto as int;
declare @idPazloc as int
declare @idcont as int
declare @idPAzlocStr as varchar(50)
declare @idAura as varchar(50)
declare @cceroga as char(7)
--
SELECT @idcont=COD_T_CONTATTI_SISM, @id_Atto=ID_ATTO  FROM SISM_T_ATTI WHERE COD_T_ATTI_SISM=@COD_T_ATTI_SISM;
select @cceroga=CCEROGA from T_ATTI WHERE ID_CONTATTO=@idcont;
select @codiceStruttura=STS11, @matricolaUnitaProduttiva=MUP_C from UTBG_CCOSTO_PARAM where CCOSTO=@cceroga;

SELECT @idPazloc=[ID_PAZLOC] FROM [dbo].[SISM_T_CONTATTI] WHERE [COD_T_CONTATTI_SISM]=@idcont;--centro di costo

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@idPazloc and t.ID_PAZLOC=l.ID_PAZLOC;
           
if coalesce(@idAura,'')  <> ''
begin
	set @idPAzlocStr=null 
end
else 
begin 
   set @idAura=null
   set @idPAzlocStr=@idPazloc
end
       --select * from @T_CONT
--mi ricavo i codici diagnosi per apertura e chiusura
declare @DiagnosiApertura as varchar(5)
declare @DiagnosiChiusura as varchar(5)


--TODO le diagnosi possono essere cancellate capire cosa fare quando accade
SELECT @DiagnosiApertura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=0;
SELECT @DiagnosiChiusura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=2;
--       

--mi ricavo il codice inviante contatto
declare @cod_inv_cont as int
SELECT @cod_inv_cont=i.COD_INVIANTE_CONTATTO FROM SISM_INVIANTE_CONTATTO i, SISM_T_CONTATTI C where ID_INVIANTE_CONTATTO=c.COD_INVIANTE_CONTATTO and C.COD_T_CONTATTI_SISM = @idcont;
--

-- Mi ricavo TipoIntervento
declare @cod_flusso as varchar(2);
SELECT @cod_flusso=COD_FLUSSO FROM SISM_FLUSSO_TIPO_INTERVENTI F, T_ATTI A where F.CODPRE=A.CODPRE and A.ID_ATTO=@id_Atto;
--
--ricavo ProgressivoPrestazioniContatto
declare @ProgressivoPrestazioniContatto as int;
select @ProgressivoPrestazioniContatto=ID_PROG_FLUSSO FROM SISM_EVENTI_PROG_CONTATTO WHERE FK_ID_CONTATTO=@idcont and FK_COD_T_ATTI_SISM=@COD_T_ATTI_SISM;
--
-- mi ricavo e transcodifico gli operatori
DECLARE @T_OPERATORI TABLE (
[ID] int IDENTITY(1, 1) NOT NULL,
[QUALIFICA] varchar(2) null
)
insert into @T_OPERATORI(qualifica)
SELECT  top 3 CASE WHEN [QUALIFICA]=  1 OR [QUALIFICA]=  41 OR [QUALIFICA]=  42 OR [QUALIFICA]=  44 then '1'
    WHEN [QUALIFICA]=  20 then '2'
    WHEN [QUALIFICA]=  31 then '3'
	WHEN [QUALIFICA]=  10 OR [QUALIFICA]=  40 then '4'
	WHEN [QUALIFICA]=  43 then '5'
	WHEN [QUALIFICA]=  45 then '6'
	WHEN [QUALIFICA]=  46 then '7'
	 else '8' END    
  FROM CTRL_ACC_UTENTI U, SISM_L_OPERATORI_ATTI O
  where U.id_ctrl_acc_utente=O.ID_CTRL_ACC_UTENTE AND O.COD_T_ATTI_SISM=@COD_T_ATTI_SISM order by U.id_ctrl_acc_utente
--
begin
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")   
select @retXml =(
	select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceDipartimentoSaluteMentale'
				,coalesce(@codiceStruttura,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceStruttura'
			FOR XML PATH(''), type
		) ,
		
		(SELECT
			coalesce(@matricolaUnitaProduttiva,'') as 'tns:PuntoDiErogazione/tns:MatricolaUnitaProduttiva'
			,coalesce(@idAura,'') as 'tns:DatiAssistitoLight/tns:IdentificativoAURA'
			,coalesce(@idPazloc,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativoLight/tns:IdentificativoAssistito'
			FOR XML PATH(''), type
		),
		---------------- BEGIN BODY
		
		(
		SELECT TOP 1
			coalesce(C.COD_T_CONTATTI_SISM,'') as 'tns:DatiContatto/tns:IdentificativoContatto'
			,REPLACE(convert(char(10),coalesce(C.DATA_ACCESSO,''),103), '/', '') as 'tns:DatiContatto/tns:DataAperturaSchedaPaziente'
			,@DiagnosiApertura as 'tns:DatiContatto/tns:DiagnosiApertura'
			,coalesce(NULL,'') as 'tns:DatiContatto/tns:PresenzaPianoTerapeutico'
			,coalesce(CONTATTI_PRECEDENTI,'') as 'tns:DatiContatto/tns:PrecedentiContatti'
			,@cod_inv_cont as 'tns:DatiContatto/tns:InviantePerPrimoContatto'
			,case when REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '') end as 'tns:DatiContatto/tns:DataChiusuraSchedaPaziente'
			,@DiagnosiChiusura as 'tns:DatiContatto/tns:DiagnosiChiusura'
			,COD_TIPO_CONCLUSIONE as 'tns:DatiContatto/tns:ModalitaConclusione'
			FROM SISM_T_CONTATTI C, SISM_L_CONTATTI_SISM_DIAGNOSI D  where C.COD_T_CONTATTI_SISM = @idcont AND D.COD_T_CONTATTI_SISM=C.COD_T_CONTATTI_SISM
			FOR XML PATH(''), type
		),		
		(
		SELECT coalesce(@tipo,'') as 'tns:TipoMovimento'
		FOR XML PATH(''), type
		) 
		,		
		(
		SELECT
			REPLACE(convert(char(10),coalesce(convert(datetime,A.DATA_INTERVENTO_DA,103) ,''),103), '/', '') as 'tns:DatiDellaPrestazioneSemiResidenziale/tns:DataIntervento'
			,(select COD_TIPO_STRUTTURA FROM SISM_UTBG_STRUTTURE where COD_STRUTTURA=S.COD_STRUTTURA) as 'tns:DatiDellaPrestazioneSemiResidenziale/tns:TipoStrutturaSemiresidenziale'
			,A.COD_MODALITA_PRESENZA as 'tns:DatiDellaPrestazioneSemiResidenziale/tns:ModalitaDiPresenza'
			FROM SISM_T_ASSISTENZA_SEMIRESIDENZIALE S, SISM_L_ASSISTENZA_SEMIRESIDENZIALE_DATA_INTERVENTO A WHERE S.COD_T_CONTATTI_SISM=@idcont AND A.COD_ASSISTENZA_SEMIRESIDENZIALE=S.COD_ASSISTENZA_SEMIRESIDENZIALE
			FOR XML PATH(''), type 
		), 		
				
		(SELECT
			coalesce('PS','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:PrestSElement'), type 
)
end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_PRESTT]    Script Date: 04/09/2014 10:39:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_PRESTT
-- Scopo:		Carica i dati relativi alle prestazioni di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	25/11/2013 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_PRESTT]	
	@COD_T_ATTI_SISM as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
--Costanti TO DO DA mettere da qualche parte sul db 
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)
declare @codiceStruttura as varchar(50)
declare @matricolaUnitaProduttiva as varchar(5)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'--UTBG_CCOSTO

--Dati da ricavare tramite query
declare @id_Atto as int;
declare @idPazloc as int
declare @idcont as int
declare @idPAzlocStr as varchar(50)
declare @idAura as varchar(50)
declare @CENTRO_DI_COSTO as char(7)
--

SELECT @idcont=COD_T_CONTATTI_SISM, @id_Atto=ID_ATTO  FROM SISM_T_ATTI WHERE COD_T_ATTI_SISM=@COD_T_ATTI_SISM;
select @CENTRO_DI_COSTO=CENTRO_DI_COSTO from SISM_T_CONTATTI WHERE COD_T_CONTATTI_SISM=@idcont;
select @codiceStruttura=STS11, @matricolaUnitaProduttiva=MUP_C from UTBG_CCOSTO_PARAM where CCOSTO=@CENTRO_DI_COSTO;

SELECT @idPazloc=[ID_PAZLOC] FROM [dbo].[SISM_T_CONTATTI] WHERE [COD_T_CONTATTI_SISM]=@idcont;--centro di costo

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@idPazloc and t.ID_PAZLOC=l.ID_PAZLOC;
           
if coalesce(@idAura,'')  <> ''
begin
	set @idPAzlocStr=null 
end
else 
begin 
   set @idAura=null
   set @idPAzlocStr=@idPazloc
end
       --select * from @T_CONT
--mi ricavo i codici diagnosi per apertura e chiusura
declare @DiagnosiApertura as varchar(5)
declare @DiagnosiChiusura as varchar(5)


--TODO le diagnosi possono essere cancellate capire cosa fare quando accade
SELECT @DiagnosiApertura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=0;
SELECT @DiagnosiChiusura=[COD_DIA] FROM [dbo].[SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=2;
--       

--mi ricavo il codice inviante contatto
declare @cod_inv_cont as int
SELECT @cod_inv_cont=i.COD_INVIANTE_CONTATTO FROM SISM_INVIANTE_CONTATTO i, SISM_T_CONTATTI C where ID_INVIANTE_CONTATTO=c.COD_INVIANTE_CONTATTO and C.COD_T_CONTATTI_SISM = @idcont;
--

-- Mi ricavo TipoIntervento
declare @cod_flusso as varchar(2);
SELECT @cod_flusso=COD_FLUSSO FROM SISM_FLUSSO_TIPO_INTERVENTI F, T_ATTI A where F.CODPRE=A.CODPRE and A.ID_ATTO=@id_Atto;
--
--ricavo ProgressivoPrestazioniContatto
declare @ProgressivoPrestazioniContatto as int;
select @ProgressivoPrestazioniContatto=ID_PROG_FLUSSO FROM SISM_EVENTI_PROG_CONTATTO WHERE FK_ID_CONTATTO=@idcont and FK_COD_T_ATTI_SISM=@COD_T_ATTI_SISM;
--
-- mi ricavo e transcodifico gli operatori
DECLARE @T_OPERATORI TABLE (
[ID] int IDENTITY(1, 1) NOT NULL,
[QUALIFICA] varchar(2) null
)
insert into @T_OPERATORI(qualifica)
SELECT  top 3 CASE WHEN [QUALIFICA]=  1 OR [QUALIFICA]=  41 OR [QUALIFICA]=  42 OR [QUALIFICA]=  44 then '1'
    WHEN [QUALIFICA]=  20 then '2'
    WHEN [QUALIFICA]=  31 then '3'
	WHEN [QUALIFICA]=  10 OR [QUALIFICA]=  40 then '4'
	WHEN [QUALIFICA]=  43 then '5'
	WHEN [QUALIFICA]=  45 then '6'
	WHEN [QUALIFICA]=  46 then '7'
	 else '8' END    
  FROM CTRL_ACC_UTENTI U, SISM_L_OPERATORI_ATTI O
  where U.id_ctrl_acc_utente=O.ID_CTRL_ACC_UTENTE AND O.COD_T_ATTI_SISM=@COD_T_ATTI_SISM order by U.id_ctrl_acc_utente
--
begin
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")   
select @retXml =(
	select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceDipartimentoSaluteMentale'
				,coalesce(@codiceStruttura,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceStruttura'
			FOR XML PATH(''), type
		) ,
		
		(SELECT
			coalesce(@matricolaUnitaProduttiva,'') as 'tns:PuntoDiErogazione/tns:MatricolaUnitaProduttiva'
			,coalesce(@idAura,'') as 'tns:DatiAssistitoLight/tns:IdentificativoAURA'
			,coalesce(@idPazloc,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativoLight/tns:IdentificativoAssistito'
			FOR XML PATH(''), type
		),
		---------------- BEGIN BODY
		
		(
		SELECT TOP 1
			coalesce(C.COD_T_CONTATTI_SISM,'') as 'tns:DatiContatto/tns:IdentificativoContatto'
			,REPLACE(convert(char(10),coalesce(C.DATA_ACCESSO,''),103), '/', '') as 'tns:DatiContatto/tns:DataAperturaSchedaPaziente'
			,@DiagnosiApertura as 'tns:DatiContatto/tns:DiagnosiApertura'
			,coalesce(NULL,'') as 'tns:DatiContatto/tns:PresenzaPianoTerapeutico'
			,coalesce(CONTATTI_PRECEDENTI,'') as 'tns:DatiContatto/tns:PrecedentiContatti'
			,@cod_inv_cont as 'tns:DatiContatto/tns:InviantePerPrimoContatto'
			,case when REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '') end as 'tns:DatiContatto/tns:DataChiusuraSchedaPaziente'
			,@DiagnosiChiusura as 'tns:DatiContatto/tns:DiagnosiChiusura'
			,COD_TIPO_CONCLUSIONE as 'tns:DatiContatto/tns:ModalitaConclusione'
			FROM SISM_T_CONTATTI C, SISM_L_CONTATTI_SISM_DIAGNOSI D  where C.COD_T_CONTATTI_SISM = @idcont AND D.COD_T_CONTATTI_SISM=C.COD_T_CONTATTI_SISM
			FOR XML PATH(''), type
		),		
		(
		SELECT coalesce(@tipo,'') as 'tns:TipoMovimento'
		FOR XML PATH(''), type
		)
		 ,		
		(
		SELECT
			@ProgressivoPrestazioniContatto as 'tns:DatiDellaPrestazione/tns:ProgressivoPrestazioniContatto'
			,REPLACE(convert(char(10),coalesce(convert(datetime,A.DATAACC,103) ,''),103), '/', '') as 'tns:DatiDellaPrestazione/tns:DataIntervento'
			,coalesce(@cod_flusso,'') as 'tns:DatiDellaPrestazione/tns:TipoIntervento'--
			,CASE WHEN A.ID_APPUNTAMENTO IS not null THEN 1 ELSE 2 END  as 'tns:DatiDellaPrestazione/tns:ModalitaErogazioneIntervento'
			,(SELECT COD_SEDE_INTERVENTO FROM SISM_SEDE_INTERVENTO where ID_SEDE_INTERVENTO=S.ID_SEDE_INTERVENTO )as 'tns:DatiDellaPrestazione/tns:SedeIntervento'
			,(SELECT qualifica FROM @T_OPERATORI where ID=1) as 'tns:DatiDellaPrestazione/tns:Operatore1'
			,(SELECT qualifica FROM @T_OPERATORI where ID=2) as 'tns:DatiDellaPrestazione/tns:Operatore2'
			,(SELECT qualifica FROM @T_OPERATORI where ID=3) as 'tns:DatiDellaPrestazione/tns:Operatore3'
			,ABS((s.DURATA-1)/60)+1 as 'tns:DatiDellaPrestazione/tns:DurataDellaPrestazione'
			,S.TSO as 'tns:DatiDellaPrestazione/tns:PropostaDiTSO'
			FROM SISM_T_ATTI S, T_ATTI A where  S.ID_ATTO=A.ID_ATTO AND S.COD_T_ATTI_SISM=@COD_T_ATTI_SISM
			FOR XML PATH(''), type 
		), 		
				
		(SELECT
			coalesce(R.TIPORICHIEDENTE,'') as 'tns:DatiRicetta/tns:PrestazioneErogataConRicetta'
			,dbo.RemoveChars(R.NUMRICETTA) as 'tns:DatiRicetta/tns:NumeroRicetta' 
			FROM T_IMPEGNATIVE R,T_ATTI A WHERE A.ID_ATTO=@id_Atto AND R.ID_RICHIESTA=A.ID_RICHIESTA 
			FOR XML PATH(''), type
		), 		
				
		(SELECT
			coalesce('PT','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:PrestTElement'), type 
)
end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO

/****** Object:  StoredProcedure [dbo].[SISM_SALVA_XML_PRESTT_FARMACO]    Script Date: 04/09/2014 10:39:45 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Nome:		SISM_SALVA_XML_PRESTT_FARMACO
-- Scopo:		Carica i dati relativi alle prestazioni di un paziente 
-- Input:		@idcontatto = id del contatto
-- Return:		
-- Ultima mod:	04/12/2013 TRuggiero
-- Test:		TRuggiero
-- =============================================

ALTER PROCEDURE [dbo].[SISM_SALVA_XML_PRESTT_FARMACO]	
	@id_SISM_T_TERAPIA_FARMACO as int,
	@tipo as char(1),
	@retXml as xml out,
	@AnnoDiRiferimentoDaAsseMsg as int,
	@PeriodoDiRiferimentoDaAsseMsg as Varchar(2),
	@utente as varchar(50)
AS
BEGIN TRY
SET NOCOUNT ON;
	
--Costanti TO DO DA mettere da qualche parte sul db 
declare @idAtto as int;
declare @codiceMittente as varchar(3)
declare @AnnoDiRiferimento as int
declare @CodiceRegione as varchar(3)
declare @PeriodoDiRiferimento as Varchar(2)
declare @CodiceAziendaSanitariaDiRiferimento as varchar(3)
declare @codiceDipartimentoSaluteMentale as varchar(3)
declare @codiceStruttura as varchar(50)
declare @matricolaUnitaProduttiva as varchar(5)

SELECT @codiceMittente=U.VALORE FROM SISM_TBL_PARAMETRI U WHERE U.CODICE='CODAZIENDA' and U.STATO='A';
set @AnnoDiRiferimento=@AnnoDiRiferimentoDaAsseMsg;
select @CodiceRegione=CODISTAT from UTBG_REGIONI where DESCRIZ='Piemonte'
set @PeriodoDiRiferimento=@PeriodoDiRiferimentoDaAsseMsg;
select top 1 @CodiceAziendaSanitariaDiRiferimento=CODAZIENDA from UTBG_SEDI
set @codiceDipartimentoSaluteMentale='D01'--UTBG_CCOSTO??


--Dati da ricavare tramite query
declare @idPazloc as int
declare @idcont as int
declare @idPAzlocStr as varchar(50)
declare @idAura as varchar(50)
declare @ccosto as char(7)
--
SELECT @idcont=id_contatto FROM SISM_T_TERAPIA_FARMACO where id=@id_SISM_T_TERAPIA_FARMACO;

--TODO non capisco quale è la relazione tr afarmaco ed appuntamento?????? eliminare id_atto!!!!!!!!!!!!!!
SELECT @idAtto=COD_T_ATTI_SISM FROM SISM_T_ATTI WHERE COD_T_CONTATTI_SISM=@idcont;

SELECT @idPazloc=[ID_PAZLOC], @ccosto=[CENTRO_DI_COSTO] FROM [dbo].[SISM_T_CONTATTI] WHERE [COD_T_CONTATTI_SISM]=@idcont;
select @codiceStruttura=STS11, @matricolaUnitaProduttiva=MUP_C from UTBG_CCOSTO_PARAM where CCOSTO=@ccosto;

select @idAura = l.ID_AURA FROM [dbo].[T_DATI_ANAGRAFICI] t,[dbo].[L_DATI_ANAGRAFICI_AURA] l
            WHERE t.ID_PAZLOC =@idPazloc and t.ID_PAZLOC=l.ID_PAZLOC;
           
if coalesce(@idAura,'')  <> ''
begin
	set @idPAzlocStr=null 
end
else 
begin 
   set @idAura=null
   set @idPAzlocStr=@idPazloc
end
       --select * from @T_CONT
--mi ricavo i codici diagnosi per apertura e chiusura
declare @DiagnosiApertura as varchar(5)
declare @DiagnosiChiusura as varchar(5)


--TODO le diagnosi possono essere cancellate capire cosa fare quando accade
SELECT @DiagnosiApertura=[COD_DIA] FROM [SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=0;
SELECT @DiagnosiChiusura=[COD_DIA] FROM [SISM_L_CONTATTI_SISM_DIAGNOSI] WHERE COD_T_CONTATTI_SISM=@idcont AND TIPO_DIAGNOSI=2;
--       

--mi ricavo il codice inviante contatto
declare @cod_inv_cont as int
SELECT @cod_inv_cont=i.COD_INVIANTE_CONTATTO FROM SISM_INVIANTE_CONTATTO i, SISM_T_CONTATTI C where ID_INVIANTE_CONTATTO=c.COD_INVIANTE_CONTATTO and C.COD_T_CONTATTI_SISM = @idcont;
--

-- Mi ricavo TipoIntervento
declare @cod_flusso as varchar(2);
SELECT @cod_flusso=COD_FLUSSO FROM SISM_FLUSSO_TIPO_INTERVENTI F, T_ATTI A where F.CODPRE=A.CODPRE and A.ID_ATTO=@idAtto;
--
--ricavo ProgressivoPrestazioniContatto
declare @ProgressivoPrestazioniContatto as int;
select @ProgressivoPrestazioniContatto=ID_PROG_FLUSSO FROM SISM_EVENTI_PROG_CONTATTO WHERE FK_ID_CONTATTO=@idcont and FK_ID_SISM_T_TERAPIA_FARMACO=@id_SISM_T_TERAPIA_FARMACO;
--
-- mi ricavo e transcodifico gli operatori
DECLARE @T_OPERATORI TABLE (
[ID] int IDENTITY(1, 1) NOT NULL,
[QUALIFICA] varchar(2) null
)
insert into @T_OPERATORI(qualifica)
SELECT top 3 CASE WHEN [QUALIFICA]=  1 OR [QUALIFICA]=  41 OR [QUALIFICA]=  42 OR [QUALIFICA]=  44 then '1'
    WHEN [QUALIFICA]=  20 then '2'
    WHEN [QUALIFICA]=  31 then '3'
	WHEN [QUALIFICA]=  10 OR [QUALIFICA]=  40 then '4'
	WHEN [QUALIFICA]=  43 then '5'
	WHEN [QUALIFICA]=  45 then '6'
	WHEN [QUALIFICA]=  46 then '7'
	 else '8' END  
FROM CTRL_ACC_UTENTI U, SISM_L_TERAPIA_FARMACO_OPERATORE O 
WHERE O.[FK_ID_SOMMINISTRAZIONE]=@id_SISM_T_TERAPIA_FARMACO AND O.FK_ID_OPER_BABELE=U.id_ctrl_acc_utente
--
begin  
WITH XMLNAMESPACES  ('http://www.csi.it/sisminvi/' as "tns")
select @retXml =(
	select 
         ------------------HEADER
		(	SELECT
				coalesce(@codiceMittente,'') as 'tns:Mittente/tns:codiceMittente'
				,coalesce(@AnnoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:AnnoDiRiferimento'
				,coalesce(@CodiceRegione,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceRegione'
				,coalesce(@PeriodoDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:PeriodoDiRiferimento'
				,coalesce(@CodiceAziendaSanitariaDiRiferimento,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:CodiceAziendaSanitariaDiRiferimento'
				,coalesce(@codiceDipartimentoSaluteMentale,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceDipartimentoSaluteMentale'
				,coalesce(@codiceStruttura,'') as 'tns:DatiIdentificativiSchedaConStruttura/tns:codiceStruttura'
			FOR XML PATH(''), type
		) ,
		
		(SELECT
			coalesce(@matricolaUnitaProduttiva,'') as 'tns:PuntoDiErogazione/tns:MatricolaUnitaProduttiva'
			,coalesce(@idAura,'') as 'tns:DatiAssistitoLight/tns:IdentificativoAURA'
			,coalesce(@idPazloc,'') as 'tns:DatiAnagraficiAssistitiSenzaIdentificativoLight/tns:IdentificativoAssistito'
			FOR XML PATH(''), type
		),
		---------------- BEGIN BODY
		
		(
		SELECT TOP 1
			coalesce(C.COD_T_CONTATTI_SISM,'') as 'tns:DatiContatto/tns:IdentificativoContatto'
			,REPLACE(convert(char(10),coalesce(C.DATA_ACCESSO,''),103), '/', '') as 'tns:DatiContatto/tns:DataAperturaSchedaPaziente'
			,@DiagnosiApertura as 'tns:DatiContatto/tns:DiagnosiApertura'
			,coalesce(NULL,'') as 'tns:DatiContatto/tns:PresenzaPianoTerapeutico'
			,coalesce(CONTATTI_PRECEDENTI,'') as 'tns:DatiContatto/tns:PrecedentiContatti'
			,@cod_inv_cont as 'tns:DatiContatto/tns:InviantePerPrimoContatto'
			,case when REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '')='01011900' then null else REPLACE(convert(char(10),coalesce(C.DATA_CHIUSURA ,''),103), '/', '') end as 'tns:DatiContatto/tns:DataChiusuraSchedaPaziente'
			,@DiagnosiChiusura as 'tns:DatiContatto/tns:DiagnosiChiusura'
			,COD_TIPO_CONCLUSIONE as 'tns:DatiContatto/tns:ModalitaConclusione'
			FROM SISM_T_CONTATTI C, SISM_L_CONTATTI_SISM_DIAGNOSI D  where C.COD_T_CONTATTI_SISM = @idcont AND D.COD_T_CONTATTI_SISM=C.COD_T_CONTATTI_SISM
			FOR XML PATH(''), type
		),		
		(
		SELECT coalesce(@tipo,'') as 'tns:TipoMovimento'
		FOR XML PATH(''), type
		) ,		
		(
		SELECT
			@ProgressivoPrestazioniContatto as 'tns:DatiDellaPrestazione/tns:ProgressivoPrestazioniContatto'
			,REPLACE(convert(char(10),coalesce(convert(datetime,T.data_somministrazione ,103) ,''),103), '/', '') as 'tns:DatiDellaPrestazione/tns:DataIntervento'
			,'11' as 'tns:DatiDellaPrestazione/tns:TipoIntervento'--
			,T.modalita_somm  as 'tns:DatiDellaPrestazione/tns:ModalitaErogazioneIntervento'
			,T.sede_somm as 'tns:DatiDellaPrestazione/tns:SedeIntervento'
			,(SELECT qualifica FROM @T_OPERATORI where ID=1) as 'tns:DatiDellaPrestazione/tns:Operatore1'
			,(SELECT qualifica FROM @T_OPERATORI where ID=2) as 'tns:DatiDellaPrestazione/tns:Operatore2'
			,(SELECT qualifica FROM @T_OPERATORI where ID=3) as 'tns:DatiDellaPrestazione/tns:Operatore3'
			,t.durata_intervento_flusso as 'tns:DatiDellaPrestazione/tns:DurataDellaPrestazione'
			,'2' as 'tns:DatiDellaPrestazione/tns:PropostaDiTSO'-- di default a no
			FROM SISM_T_TERAPIA_FARMACO T where  T.id=@id_SISM_T_TERAPIA_FARMACO
			FOR XML PATH(''), type 
		),--i dati della ricetta per i farmaci non li inviamo 		
				
		(SELECT
			coalesce('PT','') as 'tns:TipoFlusso'
			FOR XML PATH(''), type
		)
FOR XML PATH('tns:PrestTElement'), type 
)
end
END TRY	
BEGIN CATCH
PRINT 'BEFORE RAISERROR';
--Get the details of the error
--that invoked the CATCH block
 DECLARE
   @ErMessage NVARCHAR(2048),
   @ErSeverity INT,
   @ErState INT
  
 SELECT
   @ErMessage = ERROR_MESSAGE(),
   @ErSeverity = ERROR_SEVERITY(),
   @ErState = ERROR_STATE()
  
 RAISERROR (@ErMessage,
             @ErSeverity,
             @ErState )
 PRINT 'AFTER RAISERROR'
END CATCH
PRINT 'AFTER CATCH'

GO